package arithmetic.aiqiyi;

import java.util.*;

/**
 * ţţ������ǳ����ģ�������n+m����ͬ����.��������n�������ĵ�,m���ǲ��� �ĵġ�ÿ��Сʱţţ���������ѡ��������ͬ������A��B.����������ڶ��ֿ��ܵ� pair(A, B),����һ����ѡ���ĸ�����ͬ��).Ȼ��ţţ�������A���н�̸.������ ����B���н�̸���ڽ�̸֮��.�����ѡ�������֮ǰ�������Ļ������ġ����� ����Ҫ�������������ѱ����������Ҫ��ʱ�������ֵ. �������� ���������������n��m(1<=n, m<=50) ������� ���һ��ʵ������ʾ��Ҫʱ�������ֵ���������뱣��һλС����
 *
 * ���磺 ���� 2 1 ��� 1.5
 */
public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String string = sc.next();
        int allowDel = sc.nextInt();

        Map map = new HashMap();
        char[] chars = string.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            char c = chars[i];
            if (map.containsKey(c)) {
                map.put(c, (int) map.get(c) + 1);
            } else {
                map.put(c, 1);
            }
        }
        for (int i = 0; i < allowDel; i++) {
            delMax(map);
        }
        int value = cacul(map);
        System.out.println(value);
    }

    public static int cacul(Map map) {
        Collection values = map.values();
        int result = 0;
        for (Object i : values) {
            result += (int) i * (int) i;
        }
        return result;
    }

    public static void delMax(Map map) {
        Set<Map.Entry> set = map.entrySet();
        int result = 0;
        int max = 0;
        for (Map.Entry entry : set) {
            int value = (int) entry.getValue();
            if (max < value) {
                max = value;
            }
        }
        // ���ļ�1
        for (Map.Entry entry : set) {
            int value = (int) entry.getValue();
            if (max == value) {
                map.put(entry.getKey(), max - 1);
            }
        }
    }
}
